
11.10.2019, 15:48
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
К ключ массива date передать массив значений Id
jQuery(document).ready(function() {
jQuery(".submit").on("click", function (event) {
event.preventDefault();
if (jQuery(".block-border").hasClass("active")) {
var name = jQuery('.form-name').val();
var last_name = jQuery('.form-last_name').val();
var form_phone = jQuery('.form-phone').val();
var form_country = jQuery('.form-country').val();
var form_city = jQuery('.form-city').val();
var form_street = jQuery('.form-street').val();
var form_message = jQuery('.form-message').val();
var form_num = jQuery('.form-num').val();
var form_weight1 = jQuery('.form-weight1').val();
var form_weight2 = jQuery('.form-weight2').val();
var form_num2 = jQuery('.form-num2').val();
var form_weight3 = jQuery('.form-weight3').val();
var form_weight4 = jQuery('.form-weight4').val();
jQuery.ajax({
context: document.body,
url: "/wp-admin/admin-ajax.php",
method: 'post',
data: {
action: 'ajax_order',
name: name,
last_name: last_name,
phone: form_phone,
country: form_country,
city: form_city,
street: form_street,
message: form_message,
form_num: form_num,
form_weight1: form_weight1,
form_weight2: form_weight2,
form_num2: form_num2,
form_weight3: form_weight3,
form_weight4: form_weight4,
post_id: jQuery('.block-border.active').find('.hidd').attr('id'),
meta_val: 1
},
function(date) {
jQuery('.block-border').hasClass("active").find('.hidd').text(date);
},
success: function (response) {
jQuery("#sendform").html('<p class="thank" style="text-align: center;margin-bottom: 0px;">Заказ забронирован!<p>');
}
});
};
});
});
Подскажите, пожалуйста, как в post_id: jQuery('.block-border.active').find('.hidd').attr('id') передать все полученные id? А не только первый по которому кликнули
|
|

11.10.2019, 15:54
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Julia1991
|
name = jQuery('.form-name').val();
|
и ....
А почему не $(this).serialise() или .serialiseArray()? ".submit" - это форма?
Последний раз редактировалось laimas, 11.10.2019 в 15:58.
|
|

11.10.2019, 16:00
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
Подскажите, как правильно написать для
post_id: jQuery('.block-border.active').find('.hidd').attr('id')
чтоб получить все Id
|
|

11.10.2019, 16:05
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Julia1991
|
Подскажите, как правильно написать для
|
Что дописать и чего вы вообще хотите передать на сервер? Если .submit это кнопка отправления формы, то почему обрабатываете ее щелчок вместо того чтобы обрабатывать событие отправления формы? Вам же ее поля нужны, и для их получения есть методы, а вместо этого вы через посредников дублируете имена полей и по отдельности получаете каждое поле.
post_id должен передать значения нескольких id?
|
|

11.10.2019, 16:10
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
post_id должен передать значения всех Id по которым кликнули мышкой
|
|

11.10.2019, 16:16
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Julia1991
|
post_id должен передать значения всех Id по которым кликнули мышкой
|
А что такое то, id которых надо получить и по которым щелкали? Ну например, пусть это будут несколько кнопок, по которым щелкали, но если отправляется форма, то как может связаны эти события, щелчки и отправление, это ведь разные события? Или это элементы отмеченные, которым установлен класс "hidd"? Если да, то их можно передать под одним ключом как JSON или строкой. Так и нужно?
|
|

11.10.2019, 16:24
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
http://snails.2w-shop.com/preorder-snails это все товары (вывела их с помощью записей на вордпресс), при клике на .block-border присваивается класс .active и да я должна передать id тега .hidd блока по которому я кликнула мышкой, так как я могу выбрать несколько элементов, то мне нужно вытянуть все их id чтоб передать на сервер и на сервере я обрабатываю мета поля по переданному id и передаю значение "1" в .hidd обратно
<?php
function total_form(){
$name = $_REQUEST['name'];
$last_name = $_REQUEST['last_name'];
$phone = $_REQUEST['phone'];
$country = $_REQUEST['country'];
$city = $_REQUEST['city'];
$street = $_REQUEST['street'];
$message = $_REQUEST['message'];
$form_num = $_REQUEST['form_num'];
$form_weight1 = $_REQUEST['form_weight1'];
$form_weight2 = $_REQUEST['form_weight2'];
$form_num2 = $_REQUEST['form_num2'];
$form_weight3 = $_REQUEST['form_weight3'];
$form_weight4 = $_REQUEST['form_weight4'];
$metaVal = $_POST['meta_val'];
$post_id = $_POST['post_id'];
$action = 'post_id_' . $post_id;
update_post_meta($post_id, 'pole_booked_product', $metaVal, $value);
$response = '';
$thm = 'Заказ звонка';
$thm = "=?utf-8?b?". base64_encode($thm) ."?=";
$msg = "Имя: ".$name."<br/>
Фамилия: ".$last_name ."<br/>
Телефон: ".$phone ."<br/>
Страна: ".$country ."<br/>
Город: ".$city ."<br/>
Улица: ".$street ."<br/>
Сообщение: ".$message ."<br/>
№ HELIX ASPERSA MULLER: ".$form_num ."<br/>
1 класс HELIX ASPERSA MULLER: ".$form_weight1 ."<br/>
2 класс HELIX ASPERSA MULLER: ".$form_weight2 ."<br/>
№ HELIX ASPERSA MAXIMA: ".$form_num2 ."<br/>
1 класс HELIX ASPERSA MAXIMA: ".$form_weight3 ."<br/>
2 класс HELIX ASPERSA MAXIMA: ".$form_weight4 ."<br/>
";
$mail_to = 'juliaradionova1991@gmail.com';
$headers = "Content-Type: text/html; charset=utf-8\n";
//$headers .= 'From: test@gmail.com' . "\r\n";
if(mail($mail_to, $thm, $msg, $headers)){
$response = 'Сообщение отправлено';
}else
$response = 'Ошибка при отправке';
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ){
echo $response;
wp_die();
}
}
add_action('wp_ajax_nopriv_ajax_order', 'total_form' );
add_action('wp_ajax_ajax_order', 'total_form' );
?>
|
|

11.10.2019, 16:31
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Если я правильно понял, то так:
var ids = JSON.stringify(jQuery.map(jQuery('.block-border.active'), function(a) {
return jQuery(a).find('.hidd').attr('id')
}));
ids - это массив как json. Соответственно на сервере:
$post_id = json_decode($_POST['post_id'], 1); //массив id
Если же на сервере их надо получить как к примеру строку где они через запятую, то достаточно на клиенте:
var ids = jQuery.map(jQuery('.block-border.active'), function(a) {
return jQuery(a).find('.hidd').attr('id')
}).join(', ');
Последний раз редактировалось laimas, 11.10.2019 в 16:37.
|
|

11.10.2019, 16:52
|
Профессор
|
|
Регистрация: 13.08.2017
Сообщений: 167
|
|
Не работает(
<?php
function total_form(){
$name = $_REQUEST['name'];
$last_name = $_REQUEST['last_name'];
$phone = $_REQUEST['phone'];
$country = $_REQUEST['country'];
$city = $_REQUEST['city'];
$street = $_REQUEST['street'];
$message = $_REQUEST['message'];
$form_num = $_REQUEST['form_num'];
$form_weight1 = $_REQUEST['form_weight1'];
$form_weight2 = $_REQUEST['form_weight2'];
$form_num2 = $_REQUEST['form_num2'];
$form_weight3 = $_REQUEST['form_weight3'];
$form_weight4 = $_REQUEST['form_weight4'];
$metaVal = $_POST['meta_val'];
//$post_id = $_POST['post_id'];
$post_id = json_decode($_POST['post_id'], 1);
$action = 'post_id_' . $post_id;
$key1_values = get_post_meta('pole_booked_product', $post_id);
foreach ($key1_values as $value){
update_post_meta($post_id, 'pole_booked_product', $metaVal);
//echo get_post_meta($post_id, 'pole_booked_product', true);
};
//update_post_meta($post_id, 'pole_booked_product', $metaVal);
//echo get_post_meta($post_id, 'pole_booked_product', true);
$response = '';
$thm = 'Заказ звонка';
$thm = "=?utf-8?b?". base64_encode($thm) ."?=";
$msg = "Имя: ".$name."<br/>
Фамилия: ".$last_name ."<br/>
Телефон: ".$phone ."<br/>
Страна: ".$country ."<br/>
Город: ".$city ."<br/>
Улица: ".$street ."<br/>
Сообщение: ".$message ."<br/>
№ HELIX ASPERSA MULLER: ".$form_num ."<br/>
1 класс HELIX ASPERSA MULLER: ".$form_weight1 ."<br/>
2 класс HELIX ASPERSA MULLER: ".$form_weight2 ."<br/>
№ HELIX ASPERSA MAXIMA: ".$form_num2 ."<br/>
1 класс HELIX ASPERSA MAXIMA: ".$form_weight3 ."<br/>
2 класс HELIX ASPERSA MAXIMA: ".$form_weight4 ."<br/>
";
$mail_to = 'juliaradionova1991@gmail.com';
$headers = "Content-Type: text/html; charset=utf-8\n";
//$headers .= 'From: test@gmail.com' . "\r\n";
// Отправляем почтовое сообщение
if(mail($mail_to, $thm, $msg, $headers)){
$response = 'Сообщение отправлено';
}else
$response = 'Ошибка при отправке';
// Сообщение о результате отправки почты
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ){
echo $response;
wp_die();
}
}
add_action('wp_ajax_nopriv_ajax_order', 'total_form' );
add_action('wp_ajax_ajax_order', 'total_form' ); ?>
jQuery(document).ready(function() {
jQuery(".submit").on("click", function (event) {
event.preventDefault();
if (jQuery(".block-border").hasClass("active")) {
var name = jQuery('.form-name').val();
var last_name = jQuery('.form-last_name').val();
var form_phone = jQuery('.form-phone').val();
var form_country = jQuery('.form-country').val();
var form_city = jQuery('.form-city').val();
var form_street = jQuery('.form-street').val();
var form_message = jQuery('.form-message').val();
var form_num = jQuery('.form-num').val();
var form_weight1 = jQuery('.form-weight1').val();
var form_weight2 = jQuery('.form-weight2').val();
var form_num2 = jQuery('.form-num2').val();
var form_weight3 = jQuery('.form-weight3').val();
var form_weight4 = jQuery('.form-weight4').val();
var ids = JSON.stringify(jQuery.map(jQuery('this'), function(a) {
return jQuery(a).find('.hidd').attr('id')
}));
jQuery.ajax({
context: document.body,
url: "/wp-admin/admin-ajax.php",
method: 'post',
data: {
action: 'ajax_order',
name: name,
last_name: last_name,
phone: form_phone,
country: form_country,
city: form_city,
street: form_street,
message: form_message,
form_num: form_num,
form_weight1: form_weight1,
form_weight2: form_weight2,
form_num2: form_num2,
form_weight3: form_weight3,
form_weight4: form_weight4,
post_id: ids,
meta_val: 1
},
function(date) {
jQuery('.block-border').hasClass("active").find('.hidd').text(date);
},
success: function (response) {
jQuery("#sendform").html('<p class="thank" style="text-align: center;margin-bottom: 0px;">Заказ забронирован!<p>');
}
});
};
});
});
|
|

11.10.2019, 16:59
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Погодите, я ведь даже не знаю чего вам в конечном итоге нужно, а вы не даете пояснений. Но думайте что вы делаете, разве такое возможно - $action = 'post_id_' . $post_id;, если $post_id, это массив? Конечно нет, и если вам нужно в итоге так:
post_id_12, post_id_22, ... это к примеру, то на сервере нужно:
$action = 'post_id_' . implode(', post_id_', json_decode($_POST['post_id'], 1));
Либо сразу на клиенте получить такую строку:
var ids = 'post_id_' + jQuery.map(jQuery('.block-border.active'), function(a) {
return jQuery(a).find('.hidd').attr('id')
}).join(', post_id_');
Последний раз редактировалось laimas, 11.10.2019 в 17:02.
|
|
|
|